home *** CD-ROM | disk | FTP | other *** search
/ Great Explorers / Great Explorers.iso / setup.mst < prev    next >
Text File  |  1996-08-28  |  25KB  |  724 lines

  1. rem ****************************************************************************
  2. rem *
  3. rem *    File:        setup.mst
  4. rem *
  5. rem *    Author:        Clive Nutter
  6. rem *
  7. rem *    Purpose:    Script file for MS setup engine.
  8. rem *
  9. rem *    Change History:
  10. rem *
  11. rem *        01.09.95, CLN    Created, based on AV title setup.mst.
  12. rem *        02.09.95, CLN    Added QuickTime version checking.
  13. rem *        03.09.95, CLN    Amended so each promo has its own copy of
  14. rem *                engine.
  15. rem *        06.09.95, CLN    Added code for First World War & War in the
  16. rem *                Pacific promos.
  17. rem *        15.09.95, CLN    Add DLL call to update system configuration.
  18. rem *                Add code to display read-me file.
  19. rem *        09.10.95, CLN    Cater for advert(s) and retail loop variants.
  20. rem *        04.01.96, CLN    Allow selection of VfW and WinToon and engine
  21. rem *                sharing options.
  22. rem *        01.04.96, CLN    Change to install QuickTime 2.1.0.
  23. rem *        30.05.96, CLN    Change to install QuickTime 2.1.1.
  24. rem *
  25. rem ****************************************************************************
  26.  
  27. '$INCLUDE 'setupapi.inc'
  28. '$INCLUDE 'mscpydis.inc'    ''System
  29. '$INCLUDE 'msdetect.inc'    ''Detects Available Disk Space      
  30. '$INCLUDE 'avsetup.inc'
  31. '$INCLUDE 'pmgrdde.inc'        ''Program Manager DDE
  32. '$INCLUDE 'system.inc'        ''FlagTower system configuration
  33. '$INCLUDE 'flagtowr.inc'    ''FlagTower title values
  34.  
  35. ''Dialog ID's
  36. CONST WELCOME       = 100
  37. CONST ASKQUIT       = 200
  38. CONST ASKPATH       = 300
  39. CONST EXITFAILURE   = 400
  40. CONST EXITQUIT      = 600
  41. CONST EXITSUCCESS   = 700
  42. CONST APPHELP       = 900
  43. CONST SMALLWIN      = 2200
  44. CONST RESTART       = 2600
  45. CONST RESTARTII     = 2700
  46. CONST BADPATH       = 6400
  47.  
  48. 'GLOBAL SizeReq&        '' Total Disk Size required for installation
  49.  
  50. GLOBAL WinDir$            ''Windows directory
  51. GLOBAL WinSysDir$        ''Windows system directory
  52. GLOBAL WinSys32Dir$        ''Win32 system directory
  53. GLOBAL MinorVer%        ''Windows minor version number
  54. GLOBAL OnNT$            ''NT flag
  55.  
  56. GLOBAL SrcDir$            ''Source directory                   
  57. GLOBAL CDDrive$            ''CD-Rom drive letter
  58. GLOBAL DbPath$            ''Database directory
  59.  
  60. GLOBAL AVDest$            ''Directory to put AV engine libraries
  61. GLOBAL AVDestRoot$        '' Root directory for title
  62.  
  63. global isInstallQTW as integer
  64.  
  65. ''----- External functions called by Video for Windows setup
  66. DECLARE FUNCTION ExitWindowsExec  LIB "user" (Exec$, Param$) AS INTEGER
  67. DECLARE FUNCTION OnWindowsNT LIB "iniupd.dll" AS INTEGER
  68. DECLARE SUB      Reboot LIB "iniupd.dll"
  69. DECLARE FUNCTION VflatdPresent LIB "iniupd.dll" AS INTEGER
  70. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  71.  
  72. ''----- External functions called by WinG setup
  73. DECLARE FUNCTION GetRealSystemDirectory LIB "setuphlp.dll" (szDir$, cbBuf%) AS INTEGER
  74. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.dll" (szOrig$, szNew$) AS INTEGER
  75. DECLARE SUB      RenameFilePlease LIB "setuphlp.dll" (szOrig$, szNew$)
  76. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  77.                  
  78. ''----- Effects library functions used
  79. DECLARE FUNCTION DivertBackMessage LIB "avsetup.dll" (WinHandle%, InstHandle%) AS INTEGER
  80. DECLARE SUB      MaxWindowArea LIB "avsetup.dll" (WinHandle%)
  81. DECLARE FUNCTION ShowBitmap LIB "avsetup.dll" (WinHandle%, szName$, nFx%, nFxTime%) AS INTEGER          
  82. DECLARE FUNCTION SetFileAttribute LIB "avsetup.dll" (szName$, nMode%) AS INTEGER
  83. DECLARE FUNCTION fnnGetQTWVersion LIB "qtw_vers.dll" (ourVersion&) AS INTEGER
  84. DECLARE FUNCTION CallModifyCONFIG LIB "confchk.dll" (WinHandle%) AS INTEGER
  85.  
  86. ''----- Local functions
  87. DECLARE FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) AS INTEGER
  88. DECLARE FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) AS INTEGER
  89. declare sub     CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ )
  90. declare sub     CopyTitleDatabase(pathDatabase$, sectDatabase$ )
  91. declare sub     InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ )
  92. declare sub     CreateTitleIcon( pathBinary$, dllFile$, iconNo$ )
  93. declare sub     CreateMenuIcon( pathBinary$ )
  94. DECLARE SUB      Install
  95. DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING
  96. DECLARE SUB      UpdateWinG32(szOrig$)
  97.  
  98. INIT:
  99.  
  100.     CUIDLL$   = "ftcuistf.dll"          ''Custom user interface dll
  101.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  102.  
  103.     MajorVer%      = GetWindowsMajorVersion()
  104.     MinorVer%      = GetWindowsMinorVersion()
  105.     Processor%      = GetProcessorType()
  106.     WinDir$       = GetWindowsDir()
  107.     WinSysDir$      = GetWindowsSysDir()
  108.     WinSys32Dir$  = WinDir$ + "system32"
  109.     SrcDir$       = GetSymbolValue("STF_SRCDIR")
  110.     
  111.     'Make sure the user's system can handle Video for Windows
  112.     dummy% = CheckVideoSystem(MajorVer%, MinorVer%, Processor%) 
  113.     IF OnWindowsNT() THEN
  114.         OnNT$ = "TRUE"
  115.     END IF
  116.                            
  117.     'Read setup's .INF file                           
  118.     szInf$ = GetSymbolValue("STF_SRCINFPATH")                                 
  119.     IF szInf$ = "" THEN
  120.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  121.     END IF
  122.     ReadInfFile szInf$
  123.  
  124.     'Divert paint messages of background window to our own routine                      
  125.     dummy% = DivertBackMessage(HwndFrame(), HinstFrame())
  126.     MaxWindowArea(HwndFrame())
  127.     dummy% = ShowBitmap(HwndFrame(), SrcDir$+"logo.bmp",106,1000)     
  128.             
  129.                
  130. WELCOME:
  131.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  132.  
  133.     IF sz$ = "CONTINUE" THEN
  134.         UIPop 1
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO WELCOME
  138.     END IF
  139.  
  140.                                                       
  141. GETPATH: 
  142.     AVDest$ = Dir_DefaultInstall
  143.  
  144.     SetSymbolValue "EditTextIn", AVDest$
  145.     SetSymbolValue "EditTextOut", AVDest$
  146.     SetSymbolValue "EditFocus", "END"
  147. GETPATHL1:
  148.     SetSymbolValue "DLGEVENT", ""
  149.  
  150.     sz$ = UIStartDlg(CUIDLL$, ASKPATH, "FEditDlgProc", 0, "")
  151.     AVDest$ = GetSymbolValue("EditTextOut")
  152.     AVDestRoot$ = AVDest$
  153.  
  154.     IF sz$ = "CONTINUE" THEN
  155.         IF IsDirWritable(AVDest$) = 0 THEN 
  156.            GOSUB BADPATH
  157.            GOTO GETPATHL1
  158.         END IF
  159.         UIPop 1
  160.     ELSE 
  161.         IF sz$ = "EXIT" THEN
  162.             GOSUB ASKQUIT
  163.         END IF
  164.         GOTO GETPATH        
  165.     END IF
  166.           
  167.           
  168.     if not Dir_Group = "" then
  169.         AVDest$ = AVDest$ + Dir_Group
  170.     end if
  171.  
  172.     rem *** Prepare copy list
  173.  
  174.     ClearCopyList                                           
  175.  
  176. '$INCLUDE 'init.mst'
  177.  
  178. '$ifdef IsUsingVfW
  179.  
  180.     '' ------------------- Copy list for Video for Windows --------------------
  181.     ''Remove DCISVGA file
  182.  
  183.     RemoveFile WinSysDir$+"dcisvga.drv", cmoForce
  184.  
  185.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            
  186.             'These files not necessary on Windows NT
  187.         AddSectionFilesToCopyList "VfW MPlayer", SrcDir$, WinDir$
  188.         AddSectionFilesToCopyList "VfW OLE2", SrcDir$, WinSysDir$
  189.     END IF
  190.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  191.     AddSectionFilesToCopyList "VfW ACM Drivers", SrcDir$, WinSysDir$
  192.     AddSectionFilesToCopyList "VfW AVICodecs", SrcDir$, WinSysDir$
  193.     IF OnNT$ = "TRUE" THEN
  194.         AddSectionFilesToCopyList "VfW NT MSVideo", SrcDir$, WinSys32Dir$
  195.     ENDIF
  196. '$endif
  197.  
  198. '' --------------------- Copy list for WinG -----------------------
  199.     AddSectionFilesToCopyList "WinG runtime", SrcDir$, WinSysDir$
  200.     Dest1$ = MakePath (WinSysDir$,"Wing32.dll")
  201.     Dest2$ = MakePath (WinSysDir$,"Wing32.xxx")
  202.     RenameFilePlease Dest1$, Dest2$
  203.  
  204. '$ifdef IsUsingWinToon
  205.  
  206.     '' ---------------------- Copy list for WinToon -----------------------
  207.     AddSectionFilesToCopyList "WinToon runtime", SrcDir$, WinSysDir$
  208. '$endif
  209.  
  210. '' --------------------- Copy list for MediaView ----------------------
  211.     AddSectionFilesToCopyList "MediaView runtime", SrcDir$, WinSysDir$
  212.  
  213.     rem *** Copy list for QuickTime
  214.  
  215.     isInstallQTW = 0
  216.  
  217. rem    qtwVersion& = 10794    ' version 2.1.0.42
  218.     qtwVersion& = 11065    ' version 2.1.1.57
  219.  
  220.     s% = fnnGetQTWVersion( qtwVersion& )
  221.  
  222.     if s% = 1 then
  223.         isInstallQTW = 1
  224.  
  225. '$ifdef IsUsingQTUtilities
  226.         AddSectionFilesToCopyList "QuickTime 2.1.1 Utilities", SrcDir$, WinDir$
  227. '$endif
  228.         AddSectionFilesToCopyList "QuickTime 2.1.1 Runtime", SrcDir$, WinSysDir$
  229.     endif
  230.  
  231. '' ------------------------ Copy list for ADS -------------------------
  232.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  233.  
  234. '' ------------------------ Copy list for AAPLAY -------------------------
  235.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  236.  
  237. '$ifdef IsEncrypted
  238.     rem *** Copy list for C-Dilla
  239.  
  240. '$ifdef IsUsingCDillaV1
  241.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  242. '$endif
  243.  
  244. '$endif
  245.  
  246.     rem *** Common utilities and system files
  247.  
  248.     AddSectionFilesToCopyList Sect_GenericUtility, SrcDir$, AVDestRoot$
  249.     AddSectionFilesToCopyList Sect_GenericSystem, SrcDir$, WinSysDir$
  250.  
  251.     if not Dir_Group = "" then
  252.         dummy% = setDOSFileAttr( AVDest$ + Dir_Binary + FN_Description, 0, 1 )
  253.  
  254.         AddSectionFilesToCopyList Sect_GenericGroupUtility, SrcDir$, AVDest$
  255.         AddSectionFilesToCopyList Sect_GenericGroupBinary, SrcDir$, AVDest$ + Dir_Binary
  256.     end if
  257.  
  258. '$INCLUDE 'copylist.mst'
  259.  
  260. '' -------- Check space on hard disk --------
  261.     SizeReq& = GetCopyListCost ("","", "")
  262.     IF SizeReq& <> 0 THEN
  263.         GOSUB SMALLWIN
  264.         END
  265.     END IF
  266.  
  267.                               
  268. '' Perform install                              
  269.     Install
  270.  
  271. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  272. '' else, it gives the user the choice
  273.     RESTRT% = RestartListEmpty ()
  274.     Exe$ = WinDir$ + "\_msrstrt.exe"
  275.     Batch$ = WinDir$ + "\_mssetup.bat"
  276.     empty$ = ""
  277.  
  278. RESTART:
  279.     IF RESTRT% = 0 THEN
  280.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  281.        IF sz$ = "REACTIVATE" THEN
  282.                GOTO RESTART
  283.        ENDIF
  284.        I% = ExitExecRestart ()
  285.        RemoveFile Exe$, cmoForce
  286.        RemoveFile Batch$, cmoForce
  287.        END
  288.     ELSE
  289.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  290.        IF sz$ = "CONTINUE" THEN
  291.                I% = ExitWindowsExec (Exe$, empty$)                             
  292.                IF I% = 0 THEN
  293.                    GOTO RESTART
  294.                ELSE
  295.                  END
  296.                ENDIF
  297.        ELSEIF sz$ = "EXIT" THEN
  298.                UIPopAll
  299.               END
  300.        ELSEIF sz$ = "REACTIVATE" THEN
  301.                GOTO RESTART
  302.        ELSE
  303.               UIPop 1
  304.        END IF
  305.     END IF
  306.  
  307.  
  308. QUIT:
  309.     ON ERROR GOTO ERRQUIT
  310.  
  311.     IF ERR = 0 THEN
  312.         dlg% = EXITSUCCESS
  313.     ELSEIF ERR = STFQUIT THEN
  314.         dlg% = EXITQUIT
  315.     ELSE
  316.         dlg% = EXITFAILURE
  317.     END IF
  318. QUITL1:
  319.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  320.     IF sz$ = "REACTIVATE" THEN
  321.         GOTO QUITL1
  322.     END IF
  323.     UIPop 1
  324.     END
  325.  
  326. ERRQUIT:
  327.     i% = DoMsgBox("An installation problem occured.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  328.     END
  329.  
  330.  
  331. ASKQUIT:
  332.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  333.  
  334.     IF sz$ = "EXIT" THEN
  335.         UIPopAll
  336. ''        ERROR STFQUIT
  337.     END
  338.     ELSEIF sz$ = "REACTIVATE" THEN
  339.         GOTO ASKQUIT
  340.     ELSE
  341.         UIPop 1
  342.     END IF
  343.     RETURN
  344.  
  345. SMALLWIN:
  346.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  347.     IF sz$ = "REACTIVATE" THEN
  348.         GOTO SMALLWIN
  349.     END IF
  350.     UIPop 1
  351.     RETURN
  352.           
  353. BADPATH:
  354.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  355.     IF sz$ = "REACTIVATE" THEN
  356.         GOTO BADPATH
  357.     END IF
  358.     UIPop 1
  359.     RETURN
  360.  
  361. '**
  362. '** Purpose:
  363. '**     Performs all installation operations.
  364. '** Arguments:
  365. '**     none.
  366. '** Returns:
  367. '**     none.
  368. '*************************************************************************
  369. SUB Install STATIC           
  370.  
  371.     SetRestartDir WinDir$
  372.     CopyFilesInCopyList
  373.     UpdateWinG32 WinSysDir$
  374.  
  375. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  376.     inia$ = MakePath(WinDir$, "win.ini")
  377.     inib$ = MakePath(WinDir$, "win.ftw")
  378.     CopyFile inia$, inib$, cmoOverwrite, 0
  379.     inia$ = MakePath(WinDir$, "system.ini")
  380.     inib$ = MakePath(WinDir$, "system.ftw")
  381.     CopyFile inia$, inib$, cmoOverwrite, 0
  382.                                                                               
  383.                                                                               
  384. '$ifdef IsEncrypted
  385.     rem *** Copy list for C-Dilla version 2
  386.  
  387.     rem *** C-Dilla v2 not in setup.inf
  388.  
  389. '$ifdef IsUsingCDillaV2
  390.     i% = installCDilla( HwndFrame(), SrcDir$+"_sys\cdilla2", 0 )
  391. '$endif
  392.  
  393. '$endif
  394.  
  395. '$ifdef IsUsingVfW
  396.  
  397.     ''----------------- Update INI files for Video for Windows ---------------
  398.     ''Updating WIN.INI and SYSTEM.INI
  399.     ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  400.  
  401.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  402.         IF VflatdPresent() = 0 THEN
  403.             CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  404.         END IF
  405.     END IF
  406.  
  407.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  408.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  409.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  410.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  411.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  412.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  413.     IF I% = 0  THEN
  414.         CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  415.     END IF
  416.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  417.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  418.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  419.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  420.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  421.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  422.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  423.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  424.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  425. '$endif
  426.  
  427.     if isInstallQTW = 1 then
  428.  
  429.         rem *** Update INI files for QuickTime
  430.  
  431.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  432.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  433.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  434.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  435.  
  436.         rem *** Create QTW.INI
  437.         ini$ = MakePath(WinDir$, "qtw.ini")
  438.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  439.         RemoveIniKey ini$, "video", "optimize", cmoNone
  440.         CreateIniKeyValue ini$, "Sound", "DisableAutoRateAdjust", "1" , cmoOverwrite
  441.     endif
  442.  
  443.     rem Compatibility hacks.
  444.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  445.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  446.  
  447.     rem *** Update INI files for AAPLAY
  448.  
  449.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  450.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  451.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  452.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  453.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  454.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  455.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  456.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  457.  
  458. '$ifdef IsUsingVfW
  459.  
  460.     ''------ Register Video for Windows components -----
  461.     ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  462.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  463.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  464.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  465.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  466.                                    
  467.         '' Mplayer
  468.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  469.  
  470.     END IF    ''NT and next version of Windows installation stop here.
  471.  
  472.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  473. '$endif
  474.  
  475. '$INCLUDE 'install.mst'
  476.  
  477. '$ifdef IsUsingMenu
  478.     CreateMenuIcon AVDest$ + Dir_Binary
  479. '$endif
  480.  
  481.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDestRoot$ + "\uninstal.exe", "", cmoOverwrite
  482. '$ifdef IsUsingOnLineReg
  483.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDestRoot$ + "\onlinreg.exe", "", cmoOverwrite
  484. '$endif
  485.  
  486. '$ifdef IsSingleReadme
  487.     rem *** Icon for readme
  488.  
  489.     Cmd_ReadMe$ = AVDest$ + FN_ReadMe
  490.  
  491.     CreateProgmanItem PMG_FlagTower, "FlagTower Read me", Cmd_ReadMe$, "" , cmoOverwrite
  492. '$endif
  493.  
  494.     i% = CallModifyCONFIG( HwndFrame() )
  495.  
  496. REM        Run( "notepad  " + SrcDir$ + "readme.txt" )
  497.  
  498. END SUB
  499.                                                                                               
  500. ' -------------------------------------------------------------------------------------------- 
  501. ' -------------------------------------------------------------------------------------------- 
  502. ' -------------------------------------------------------------------------------------------- 
  503. ' Miscellaneous Functions 
  504. ' -------------------------------------------------------------------------------------------- 
  505.  
  506. '**
  507. '** Purpose:
  508. '**     Appends a file name to the end of a directory path,
  509. '**     inserting a backslash character as needed.
  510. '** Arguments:
  511. '**     szDir$  - full directory path (with optional ending "\")
  512. '**     szFile$ - filename to append to directory
  513. '** Returns:
  514. '**     Resulting fully qualified path name.
  515. '*************************************************************************
  516. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  517.     IF szDir$ = "" THEN
  518.         MakePath = szFile$
  519.     ELSEIF szFile$ = "" THEN
  520.         MakePath = szDir$
  521.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  522.         MakePath = szDir$ + szFile$
  523.     ELSE
  524.         MakePath = szDir$ + "\" + szFile$
  525.     END IF
  526. END FUNCTION
  527.  
  528. SUB UpdateWinG32(szOrig$) STATIC
  529.     '
  530.     ' Check the version of wing32.dll since cannot get version
  531.     ' checking for Win32 apps from Win16
  532.     '
  533.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  534.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  535.  
  536.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  537.         RemoveFile FileOrig$, cmoForce
  538.     ELSE
  539.         RemoveFile FileNew$, cmoForce
  540.         RenameFilePlease FileOrig$, FileNew$
  541.     END IF
  542. END SUB                                                                
  543.                                                         
  544.                                                      
  545. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  546.  
  547.     ramSize% = getSystemRAM()
  548.     ramSizeStr$ = str$( ramSize% )
  549.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  550.  
  551.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  552.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  553.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  554.  
  555.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  556.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  557.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  558.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  559.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  560.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  561.  
  562. '$ifdef IsPromo
  563.     CreateIniKeyValue szINI$, "Configuration", "NoRestart",  "1" , cmoOverwrite
  564. '$endif
  565.  
  566.     CreateTitleINIFile = 0                                              
  567.     
  568. END FUNCTION                                               
  569.  
  570. sub CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ ) static
  571.  
  572.     rem *** Copy list for Accusoft Pro Gold
  573.  
  574.     AddSectionFilesToCopyList sectAccusoft$, SrcDir$, pathBinary$
  575.  
  576. '$ifdef IsEncrypted
  577.     rem *** Copy list for C-Dilla
  578.  
  579. rem    AddSectionFilesToCopyList Sect_CDillaSystem, SrcDir$, WinDir$
  580.     AddSectionFilesToCopyList sectCDilla$, SrcDir$, pathBinary$
  581. '$endif
  582.  
  583.     rem *** Copy list for AV ENGINE
  584.  
  585.     AddSectionFilesToCopyList sectEngine$, SrcDir$, pathBinary$
  586.  
  587.     rem *** Copy list for title
  588.  
  589.     AddSectionFilesToCopyList sectBinary$, SrcDir$, pathBinary$
  590.  
  591.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 0, 1 )
  592.  
  593. end sub
  594.  
  595. sub CopyTitleDatabase(pathDatabase$, sectDatabase$ ) static
  596.  
  597.     AddSectionFilesToCopyList sectDatabase$, SrcDir$, pathDatabase$
  598.  
  599. end sub
  600.  
  601. sub InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ ) static
  602.  
  603.     CDDrive$ = MID$(SrcDir$,1,1)          
  604.  
  605.     CreateDir pathRoot$, cmoNone
  606.     CreateDir pathBinary$, cmoNone
  607.     CreateDir pathDatabase$, cmoNone
  608.     dummy% = CreateTitleINIFile( pathBinary$+"\"+iniFile$, CDDrive$, pathDatabase$ )
  609.  
  610.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  611.  
  612.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  613.  
  614.     rem *** create unitdb.mbf in title database directory to aid performance
  615.  
  616. rem    CopyFile pathDatabase+"\unitbase.mbf", pathDatabase+"\unitdb.mbf", cmoOverwrite, 0
  617.  
  618. end sub
  619.  
  620. sub CreateMenuIcon( pathBinary$ ) static
  621.  
  622.     dim    PMI_Title as string
  623.  
  624.     PMI_Title = string$( 110, 32 )
  625.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  626.  
  627.     rem *** Create Program Manager Group
  628.  
  629.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  630.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  631.     
  632.     rem *** Create Icon(s)
  633.  
  634.     s% = pmDeleteItem( PMI_Title )
  635.  
  636.     CreateProgmanItem PMG_FlagTower, PMI_Title, AVDest$ + "\prommenu.exe" + " " + AVDest$ + " " + CDDrive$+":\", "", cmoOverwrite
  637.  
  638. end sub
  639.  
  640. sub CreateTitleIcon( pathBinary$, dllFile$, iconNo$ ) static
  641.  
  642.     dim    PMI_Title as string
  643.     dim    PMI_ReadMe as string
  644.     dim    Cmd_ReadMe as string
  645.  
  646.     PMI_Title = string$( 110, 32 )
  647.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  648.  
  649.     rem *** Create Program Manager Group
  650.  
  651.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  652.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  653.     
  654.     rem *** Create Icon(s)
  655.  
  656.     s% = pmDeleteItem( PMI_Title )
  657.  
  658.     TitleDLL$ = pathBinary$+"\"+dllFile$
  659.     Launch$   = pathBinary$+"\LAUNCH.EXE "
  660.  
  661.     if len( iconNo$ ) = 1 then
  662.  
  663. '$ifdef IsEncrypted
  664.         Other$    = pathBinary$+"\ZLAUNCH.EXE "
  665. '$else
  666.         Other$    = Launch$
  667. '$endif
  668.  
  669.         Other$    = Other$ + "," + iconNo$
  670.  
  671.     else
  672.  
  673.         Other$ = pathBinary$ + iconNo$ + ",0"
  674.  
  675.     end if
  676.  
  677.     Other$ = Other$ + ",0,0," + pathBinary$
  678.  
  679. '$ifdef IsUsingMenu
  680.     rem *** do nothing
  681. '$else
  682.     rem *** Icon for title
  683.  
  684.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$, Other$, cmoOverwrite
  685. '$endif
  686.  
  687. '$ifdef IsSingleReadme
  688.     rem *** do nothing
  689. '$else
  690.     rem *** Icon for readme
  691.  
  692.     PMI_ReadMe = PMI_Title + " - Read me"
  693.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  694.  
  695.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  696. '$endif
  697.  
  698. end sub
  699.  
  700. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  701. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  702.     ''Video for Windows tests
  703.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  704.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  705.         END
  706.     END IF
  707.  
  708.     'Prevents installation on 286
  709.     IF ProcType% < 3 THEN
  710.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  711.         END
  712.     END IF
  713.  
  714.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  715.     IF OnWindowsNT() THEN
  716.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  717.       IF WowVersion$ = "" THEN
  718.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  719.          END
  720.       END IF
  721.     END IF
  722.  
  723. END FUNCTION
  724.